Software developers typically create software by writing source code in one or more programming languages. Software has increased in complexity due to advances in computer processing power and user expectations. As a result, the development of such software has also become more complex. Many software development environments have been created to make the task of writing simple or complex software applications easier. These software development environments typically include code editors for viewing and editing the source code across multiple files. They also typically include debugging, testing, and deployment tools that make it easier to create, test, and deploy the software applications.
From within some code editors in many software development environments, the user is presented with options to complete the statement they are typing. For example, after the user types the name of a function to call, the list of parameters accepted by that method may be displayed. As the user types the name of an object that is present in a particular class object hierarchy, the methods or properties that are supported by the selected object may be displayed in a drop-down list to assist the user in completing the task. These code statement completion features have become widely accepted, and have aided greatly in the development of software. The user no longer has to keep a book or complex object model handy to determine what methods or properties a given object supports, because the code statement completion features in many software development environments provide this information to the user as they type lines of code within the development environment.
However, as noted earlier, software development is increasing in complexity every day. There are times when the software developer needs help with completing a higher level task that may not even be related to a specific line of code being typed at the current moment. Thus, simple code statement completion does not assist a user in such a scenario.